Computer networks may facilitate communication by establishing links between nodes (e.g. computer, server, and stand-alone peripheral) of a network. These links may be physical or logical paths from a sender of a piece of information to its receiver. Each node of a network depends upon these links to communicate with other nodes. The information may be communicated in the form of data blocks, commonly referred to as frames.
Due to the growing number of nodes in networks, it is often impractical to directly connect every pair of sender-receiver nodes with a direct link. Consequently, many networks include switches for routing frames through shared intermediate links. Each switch may include multiple ports through which frames enter and exit the switch on network links. The switch is responsible for routing frames onto links which transport the frames closer to their destination. Each switch may be simultaneously routing frames from multiple nodes through multiple links of the network.
Each link has a limit to the rate at which frames may be transported. Since competing frames must share links, each switch includes a queuing scheme for frames directed to a given link. Unless the queuing scheme is carefully designed, it is possible for queues to overflow or for frames to be “blocked” in a queue indefinitely while the link is tied up. As can be appreciated, blocking and other conflict mechanisms may prevent data from flowing expeditiously through the network. The efficiency of the network may be measured in terms of the maximum data rate, or “throughput”, and in terms of latency. Latency is the time it takes for data to travel from its source to its destination in the network.
To combat blocking and other degradations of network efficiency, virtual channels may be used. Virtual channels are independent logical links associated with a physical link.
FIG. 1 shows a simplified example of how the efficiency of a network without virtual channels may be decreased by blocking. In FIG. 1, two switches 102 and 104 are coupled by a link 106. Switch 102 includes a queue 108 for frames directed over link 106, and switch 104 includes a buffer 110 for frames received over link 106. Frames traveling from port A of switch 102 to Port E of switch 104 are labeled “E”, while frames traveling from port B of switch 102 to port F of switch 104 are labeled “F”. Frames of both types travel across the shared link 106.
Traffic congestion may prevent a switch (e.g., switch 104) from expeditiously sending a frame (e.g., an E frame) on to the next link. When this happens, buffer 110 may accumulate frames while the switch is waiting to forward the frame at the head of the buffer 110. If the buffer 110 fills, switch 104 may notify switch 102 to stop sending frames. In other words, the link becomes “blocked”, not only for the frames targeted to a congested area (e.g., the E frames), but also for any other frames that happen to share the link (e.g., the F frames). During this blocking event, the link 106 is completely unused, which seriously degrades the measurements of network efficiency.
FIG. 2 shows a simplified example of how virtual channels may minimize the effects of blocking. In FIG. 2, the physical link 106 is treated as two logical (i.e., “virtual”) links. The single queue 108 is replaced by two queues 112, 114, and the single buffer is replaced by two buffers 116, 118. The frames placed into queue 112 traverse link 106 to reach buffer 116, while the frames placed into queue 114 traverse link 106 to reach buffer 118. In normal operation, switch 102 will take turns sending frames from each queue. However, if congestion causes one of the buffers (e.g., buffer 116) to fill, switch 102 can stop sending from one queue (e.g., queue 112) and continue sending from the other queue (e.g., queue 114). Thus, link 106 continues to carry frames during a blocking event, thereby avoiding serious degradation of network efficiency measurements.
Today, switches and other network components (e.g. routers and hubs) use virtual channels to not only solve network efficiency problems, but also to ensure quality of service (QoS). QoS is the prioritization of network frames into groups that are given certain network characteristics (e.g. low latency or high bandwidth). These groups can be mapped, or assigned to virtual channels that are designed to provide the desired characteristics. For example, critical network message frames may be mapped to a virtual channel that has been given a higher priority. If other frames are competing for the same resources as critical network messages, the higher-priority frames may be given precedence over the competing frames rather than being forced to “wait their turn”.
Of course, virtual channels will only be useful if multiple channels are used. Thus it becomes necessary to assign frames to different virtual channels. The mapping of frames to a virtual channel may be carried out by logic embedded in the switch. This logic may create a correspondence between certain frame characteristics and virtual channels. Each frame possessing the necessary characteristics may get mapped to a particular virtual channel.
Fibre Channel (FC) networks employ the virtual channel concept. A single FC link can carry data at rates exceeding 2 gigabits per second (Gb/s) in both directions simultaneously. Each link can use numerous virtual channels to prevent blocking and to ensure high throughput. The FC protocol provides a standardized frame structure for transporting the data.
Due to the increased importance and availability of virtual channel enabled networking devices, numerous compatibility issues have arisen stemming from the fact that devices with differing numbers of virtual channels cannot be easily connected. For example, some devices may use 16 or more virtual channels on a single physical link, while others may only use two virtual channels per physical link. In addition, even when the number of virtual channels is identical, some devices may use different virtual channel mapping protocols. In this case, identical frames may be mapped to different virtual channels across the devices, creating an incompatibility when the devices are directly linked. It would be desirable to eliminate these compatibility issues, thereby permitting networking devices to be interconnected with models that have different virtual channel characteristics.